//张译文、曾凡诚
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
#include <QAction>
#include <QDialog>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include "Code/Simulator.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    // 组件点击（导入CSV）
    void on_DieselGen_clicked();
    void on_PV_clicked();
    void on_EnergyStorage_clicked();
    void on_Load_clicked();
    void on_Grid_clicked();
    void on_GPrice_clicked(); // 新增：电价组件点击（导入CSV）

    // 右键菜单触发
    void on_DieselGen_customContextMenuRequested(const QPoint &pos);
    void on_PV_customContextMenuRequested(const QPoint &pos);
    void on_EnergyStorage_customContextMenuRequested(const QPoint &pos);
    void on_Load_customContextMenuRequested(const QPoint &pos);
    void on_Grid_customContextMenuRequested(const QPoint &pos);
    void on_GPrice_customContextMenuRequested(const QPoint &pos); // 新增：电价组件右键菜单

    // 属性对话框点击
    void onDieselGenPropClicked();
    void onPVPropClicked();
    void onEnergyStoragePropClicked();
    void onLoadPropClicked();
    void onGridPropClicked();
    void onGPricePropClicked(); // 新增：电价属性对话框点击

    // 参数更新槽函数
    void DieselGenParamsUpdated(ComponentParam param);
    void PVParamsUpdated(ComponentParam param);
    void EnergyStorageParamsUpdated(ComponentParam param);
    void LoadParamsUpdated(ComponentParam param);
    void GridParamsUpdated(ComponentParam param);
    void GPriceParamsUpdated(ComponentParam param); // 新增：电价参数更新

    // 导出数据槽函数
    void onDieselGenExportClicked();
    void onPVExportClicked();
    void onEnergyStorageExportClicked();
    void onLoadExportClicked();
    void onGridExportClicked();
    void onGPriceExportClicked(); // 新增：电价数据导出

    // 其他功能按钮
    void on_TimeUpdate_clicked();
    void on_InitSystem_clicked();
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();

    void on_btnEconomicDispatch_clicked();

    void on_btnRuleBasedDispatch_clicked();

    void on_btnStartSimulation_clicked();

    void on_btnConfigParam_clicked();

    // 绘制曲线槽函数（新增）
    void onDrawDieselGenPowerCurve();    // 柴油发电机功率曲线
    void onDrawPVPowerCurve();          // 光伏功率曲线
    void onDrawEnergyStoragePowerCurve();// 储能功率曲线
    void onDrawLoadPowerCurve();        // 负载功率曲线
    void onDrawGridPowerCurve();        // 电网功率曲线
    void onDrawGPricePowerCurve();      // 电价曲线
private:
    Ui::MainWindow *ui;
    DataManager* dataMgr;
    Simulator* simulator;

    // 通用导入逻辑封装
    void importComponentData(const QString& dialogTitle, void (DataManager::*importFunc)(const QString&));
    // 通用导出逻辑封装
    void exportComponentData(const QString& compName, const QMap<int, float>& data,
                             void (DataManager::*exportFunc)(const QString&, const QMap<int, float>&));
};
#endif // MAINWINDOW_H
